package com.wang.tool.dagre;

import java.util.Set;

/**
 * 节点选择器
 *
 * @author shaopeng
 * @date 2023/3/26
 */
@FunctionalInterface
public interface NodeSelector<T> {

    /**
     * 根据配置选择需要执行的节点
     * 可以只返回底部节点,程序会自动补全依赖的上游节点
     *
     * @param engine  非空
     * @param param   非空
     * @param timeout 超时时间
     * @see DagreEngine#getAllIds
     * @return
     */
    Set<String> selector(DagreEngine<T> engine, T param, Integer timeout);
}
